package leetcode_周赛._2022._202203;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/3/20 10:37
 */
public class _20 {

    /**
     * 6027
     *
     * @param nums
     * @return
     */
    public int countHillValley(int[] nums) {
        int ans = 0, n = nums.length;
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(nums[i]);
            while (i < n - 1 && nums[i] == nums[i + 1]) ++i;
        }
        for (int i = 1; i < list.size() - 1; i++) {
            if (list.get(i - 1) > list.get(i) && list.get(i + 1) > list.get(i)) ++ans;
            else if (list.get(i - 1) < list.get(i) && list.get(i + 1) < list.get(i)) ++ans;
        }
        return ans;
    }

    /**
     * 6028
     * 算法：脑筋急转弯
     * 当状态为 L 时，只要左边有 R 或者 S 时，就 +1
     * 当状态为 R 时，只要左边有 L 或者 S 时，就 +1
     * 就算 R 被消耗完了，它会变成 S，还是要 +1 的
     * @param directions directions
     * @return ans
     */
    public int countCollisions(String directions) {
        int ans = 0;
        char[] arrays = directions.toCharArray();
        boolean flag = false;
        for (char c : arrays) {
            if (c == 'R' || c == 'S') flag = true;
            else if (flag) ++ans;
        }
        flag = false;
        for (int i = arrays.length - 1; i >= 0; i--) {
            if (arrays[i] == 'L' || arrays[i] == 'S') flag = true;
            else if (flag) ++ans;
        }
        return ans;
    }

}
